/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package se.kth.lwr.jeat.core;

import java.util.List;

/**An interface for all objects that we should be able to inspect in a graphical
 * user interface. 
 * 
 * Detta gänssnitt samt klassen Report har konstruerats för att försöka 
 * hålla isär kärnklasserna från det grafiska gränssnitten så mycket som möjligt.
 * För att kärnan skall kunna utökas och utvecklas utan att det enkla grafiska
 * gränssnittet (JeatExplorer) förlorar sin funktion måste klasserna i kärnan
 * själva kunna avlägga rapporter. I nuvarande implementering sker detta genom 
 * en lista innehållande rader med vardera 4 kolumner (key,value,unit, comment).
 * Nuvarande system ger en viss flexibilitet eftersom det grafiska gränssnittet 
 * inte behöver känna till några detaljer om vad som visas i huvudtabellen. Det 
 * kunde dock gjorts betydligt mera flexibelt om man hade valt en helt annan 
 * typ av datastruktur för rapporten (exempelvis XML) men detta bedömdes bli 
 * för arbetssamt att göra inom projektuppgiten samtidigt som ett sådant 
 * upplägg skulle bli överarbetat i förhållande till ambitionsnivån för det 
 * enkla grafiska gränsnittet.
 *
 * @author davidev
 */
public interface Reportable {
    
    /**This method should return a report that describes the current value(s)
     * of the object in a form of a list with records with the fields
     * [key,value,unit, comment]. It is allowed to put null objects in any 
     * position of the record.
     * 
     * @return a Report 
     */
    public Report getReport();
    
}
